Hyperparameter tuning হল মেশিন লার্নিং মডেলগুলির পারফরম্যান্স উন্নত করার জন্য অত্যন্ত গুরুত্বপূর্ণ একটি প্রক্রিয়া। এর মাধ্যমে মডেলের বিভিন্ন হাইপারপ্যারামিটারগুলির জন্য সঠিক মান নির্বাচন করা হয়। দুটি জনপ্রিয় লাইব্রেরি, Optuna এবং Hyperopt, এই প্রক্রিয়ায় সহায়ক হয়। নিচে উভয় লাইব্রেরির ব্যবহার নিয়ে আলোচনা করা হলো।
Optuna একটি ফ্লেক্সিবল এবং কার্যকরী হাইপারপ্যারামিটার অপটিমাইজেশন লাইব্রেরি। এটি বিশেষ করে বিশেষায়িত কাজের জন্য ডিজাইন করা হয়েছে।
pip install optuna
নীচে একটি সহজ উদাহরণ দেওয়া হলো যেখানে Optuna ব্যবহার করে একটি CatBoost মডেলের হাইপারপ্যারামিটার টিউন করা হচ্ছে।
import optuna
from catboost import CatBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
def objective(trial):
# Hyperparameter tuning
learning_rate = trial.suggest_float("learning_rate", 0.01, 0.3)
depth = trial.suggest_int("depth", 3, 10)
# Create and train the model
model = CatBoostClassifier(iterations=100, learning_rate=learning_rate, depth=depth, verbose=0)
model.fit(X_train, y_train)
# Make predictions
preds = model.predict(X_test)
accuracy = accuracy_score(y_test, preds)
return accuracy
# Create a study
study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=50)
# Print the best parameters
print("Best hyperparameters: ", study.best_params)
print("Best accuracy: ", study.best_value)
Hyperopt একটি আরেকটি জনপ্রিয় লাইব্রেরি যা প্রায় একই কাজের জন্য ব্যবহৃত হয়। এটি বেজিয়ান অপটিমাইজেশন ব্যবহার করে।
pip install hyperopt
Hyperopt ব্যবহার করে CatBoost মডেলের হাইপারপ্যারামিটার টিউন করার একটি উদাহরণ নিচে দেওয়া হলো:
from hyperopt import fmin, tpe, hp, STATUS_OK, Trials
from catboost import CatBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
def objective(space):
# Create and train the model
model = CatBoostClassifier(iterations=100, learning_rate=space['learning_rate'], depth=int(space['depth']), verbose=0)
model.fit(X_train, y_train)
# Make predictions
preds = model.predict(X_test)
accuracy = accuracy_score(y_test, preds)
return {'loss': -accuracy, 'status': STATUS_OK}
# Define the search space
space = {
'learning_rate': hp.uniform('learning_rate', 0.01, 0.3),
'depth': hp.quniform('depth', 3, 10, 1)
}
# Optimize the hyperparameters
trials = Trials()
best = fmin(fn=objective, space=space, algo=tpe.suggest, max_evals=50, trials=trials)
# Print the best parameters
print("Best hyperparameters: ", best)
Optuna এবং Hyperopt উভয়ই শক্তিশালী হাইপারপ্যারামিটার টিউনিং লাইব্রেরি যা মেশিন লার্নিং মডেলের কার্যকারিতা উন্নত করতে সহায়ক। Optuna আরও উন্নত ফিচার এবং সহজ ব্যবহার নিশ্চিত করে, যেখানে Hyperopt বেজিয়ান অপটিমাইজেশন প্রযুক্তি ব্যবহার করে। উভয় লাইব্রেরি ব্যবহার করে আপনি আপনার মডেলের হাইপারপ্যারামিটারগুলি কার্যকরভাবে টিউন করতে পারবেন।
আরও দেখুন...